package persistencia.xml.ensambladores;

import java.beans.PersistenceDelegate;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;

import compartido.IEntidad;

import persistencia.compartido.Tipo;
import persistencia.xml.EnsambladorXML;

public class RegistroDeEnsambladoresXML implements Iterable<Entry<Tipo<IEntidad>, EnsambladorXML>> {
	protected Map<Tipo<IEntidad>, EnsambladorXML> ensambladores;
	
	protected static RegistroDeEnsambladoresXML instancia;
	
	protected RegistroDeEnsambladoresXML() {
		this.ensambladores = new TreeMap<Tipo<IEntidad>, EnsambladorXML>();
	}
	
	public static RegistroDeEnsambladoresXML getInstancia() {
		if (instancia == null)
			instancia = new RegistroDeEnsambladoresXML();
		return instancia;
	}
	
	public void registrar(Tipo<IEntidad> tipo, EnsambladorXML ensamblador) {
		ensambladores.put(tipo, ensamblador);
	}
	
	public void desregistrar(Tipo<IEntidad> tipo) {
		ensambladores.remove(tipo);
	}
	
	public EnsambladorXML obtener(Tipo<IEntidad> tipo) {
		return ensambladores.get(tipo);
	}

	@Override
	public Iterator<Entry<Tipo<IEntidad>, EnsambladorXML>> iterator() {
		return ensambladores.entrySet().iterator();
	}
}
